// api/index.js
import axios from 'axios'

const BASE_URL = 'http://localhost:3001'

/**
 * 获取目录树数据
 * @returns {Promise} 目录树的结构化数据
 */
export function fetchTreeData() {
  return axios.get(`${BASE_URL}/tree`)
}

/**
 * 获取指定文件的数据
 * @param {string} folder - 文件所在的目录名称
 * @param {string} fileName - 文件名称
 * @returns {Promise} 文件的JSON内容
 */
export function fetchFileData(folder, fileName) {
  return axios.get(`${BASE_URL}/files/${folder}/${fileName}`)
}

/**
 * 获取目录下的所有文件数据
 * @param {string} folder - 目录名称
 * @returns {Promise} 目录下所有文件的JSON内容
 */
export function fetchDirectoryData(folder) {
  return axios.get(`${BASE_URL}/directory/${folder}`)
}

/**
 * 删除指定目录及其内容
 * @param {string} folder - 目录名称
 * @returns {Promise} 删除结果
 */
export function deleteDirectory(folder) {
  return axios.delete(`${BASE_URL}/directory/${folder}`)
}

/**
 * 删除指定文件
 * @param {string} folder - 文件所在的目录名称
 * @param {string} fileName - 文件名称
 * @returns {Promise} 删除结果
 */
export function deleteFile(folder, fileName) {
  return axios.delete(`${BASE_URL}/files/${folder}/${fileName}`)
}

/**
 * 删除指定文件中的指定组
 * @param {string} folder - 文件所在的目录名称
 * @param {string} fileName - 文件名称
 * @param {string} groupName - 要删除的组名称
 * @returns {Promise} 删除结果
 */
export function deleteGroup(folder, fileName, groupName) {
  return axios.delete(`${BASE_URL}/group/${folder}/${fileName}/${groupName}`)
}

/**
 * 更新指定文件中的指定组
 * @param {string} folder - 文件所在的目录名称
 * @param {string} fileName - 文件名称
 * @param {string} groupName - 要更新的组名称
 * @param {Object} newData - 新的组数据
 * @returns {Promise} 更新结果
 */
export function updateGroup(folder, fileName, groupName, newData) {
  console.log(`${BASE_URL}/group/${folder}/${fileName}/${groupName}`)
  return axios.put(`${BASE_URL}/group/${folder}/${fileName}/${groupName}`, { newData })
}

/**
 * 保存新的文件或组数据
 * @param {string} folder - 文件所在的目录名称
 * @param {string} date - 文件日期，用作文件名称的一部分
 * @param {Object} content - 文件内容
 * @returns {Promise} 保存结果
 */
export function saveFileData(folder, date, content) {
  return axios.post(`${BASE_URL}/files/${folder}/${date}`, content)
}
